#!/bin/bash

# 生产环境部署脚本

set -e

echo "开始部署生产环境..."

# 检查Docker是否安装
if ! command -v docker &> /dev/null; then
    echo "错误: Docker 未安装"
    exit 1
fi

if ! command -v docker-compose &> /dev/null; then
    echo "错误: Docker Compose 未安装"
    exit 1
fi

# 创建必要的目录
echo "创建数据目录..."
mkdir -p data config

# 设置目录权限
echo "设置目录权限..."
chmod 755 data config

# 停止现有容器（如果存在）
echo "停止现有容器..."
docker-compose -f docker-compose.prod.yml down 2>/dev/null || true

# 构建镜像
echo "构建生产环境镜像..."
docker-compose -f docker-compose.prod.yml build --no-cache

# 启动服务
echo "启动生产环境服务..."
docker-compose -f docker-compose.prod.yml up -d

# 等待服务启动
echo "等待服务启动..."
sleep 10

# 检查服务状态
echo "检查服务状态..."
docker-compose -f docker-compose.prod.yml ps

# 健康检查
echo "执行健康检查..."
# 获取端口配置
EXTERNAL_FRONTEND_PORT=${EXTERNAL_FRONTEND_PORT:-9980}
EXTERNAL_BACKEND_PORT=${EXTERNAL_BACKEND_PORT:-9900}

for i in {1..30}; do
    if curl -f http://localhost:$EXTERNAL_FRONTEND_PORT/ >/dev/null 2>&1; then
        echo "✅ 服务启动成功！"
        echo "前端访问地址: http://localhost:$EXTERNAL_FRONTEND_PORT/"
        echo "API访问地址: http://localhost:$EXTERNAL_BACKEND_PORT/"
        echo "查看日志: docker-compose -f docker-compose.prod.yml logs -f"
        exit 0
    fi
    echo "等待服务启动... ($i/30)"
    sleep 2
done

echo "❌ 服务启动失败，请检查日志:"
docker-compose -f docker-compose.prod.yml logs
exit 1